import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @创建人 luoxiang
 * @创建时间 2020/10/28  10:09
 * @描述 146. LRU 缓存机制       https://leetcode-cn.com/problems/lru-cache/#/
 */
public class LeetCode_146 {
    static class LRUCache extends LinkedHashMap<Integer,Integer> {

        private int capacity;

        public LRUCache(int capacity) {
            super(capacity,0.75F,true);
            this.capacity = capacity;
        }

        public int get(int key) {
            return super.getOrDefault(key,-1);

        }

        public void put(int key, int value) {
            super.put(key,value);
        }
        @Override
        protected boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {
            return super.size() > capacity;
        }
    }
    public static void main(String[] args) {
        LRUCache cache = new LRUCache( 2 );
        cache.put(1, 1);
        cache.put(2, 2);
        cache.get(1);       // 返回  1
        cache.put(3, 3);    // 该操作会使得关键字 2 作废
        cache.get(2);       // 返回 -1 (未找到)
        cache.put(4, 4);    // 该操作会使得关键字 1 作废
        cache.get(1);       // 返回 -1 (未找到)
        cache.get(3);       // 返回  3
        cache.get(4);       // 返回  4

    }


}
